// 定义连接到Arduino板的A4988引脚  
const int stepPin = 3;  // STEP引脚连接到Arduino的3号引脚  
const int dirPin = 2;   // DIR引脚连接到Arduino的2号引脚  
const int enablePin = 4; // ENABLE引脚连接到Arduino的4号引脚（可选）  
  
// 步进电机状态  
bool forward = true; // 初始方向为正向  
  
// 步进电机控制函数  
void stepMotor() {  
  digitalWrite(stepPin, HIGH);  // 发送步进脉冲  
  delayMicroseconds(10);        // 脉冲宽度，根据电机和驱动器调整  
  digitalWrite(stepPin, LOW);   // 结束脉冲  
}  
  
void setup() {  
  pinMode(stepPin, OUTPUT);  
  pinMode(dirPin, OUTPUT);  
  pinMode(enablePin, OUTPUT); // 如果使用ENABLE引脚  
  
  // 使能步进电机  
  digitalWrite(enablePin, HIGH);  
  
  // 初始化方向  
  setDirection(forward);  
}  
  
void loop() {  
  // 旋转一定步数  
  for (int i = 0; i < 200; i++) { // 例如，旋转200步  
    stepMotor();  
    delay(10); // 控制步进之间的时间间隔，可以根据需要调整  
  }  
  
  // 等待一段时间或执行其他任务  
  delay(1000);  
  
  // 反转方向  
  forward = !forward;  
  setDirection(forward);  
  
  // 再次旋转一定步数  
  for (int i = 0; i < 200; i++) {  
    stepMotor();  
    delay(10);  
  }  
  
  // 等待一段时间或执行其他任务  
  delay(1000);  
}  
  
// 设置步进电机方向  
void setDirection(bool dir) {  
  digitalWrite(dirPin, dir ? HIGH : LOW);  
}  
  
// 如果需要，可以设置微步模式（MS引脚）  
// void setMicroSteps(uint8_t microSteps) {  
//   // 根据A4988的数据手册，MS引脚的不同状态代表不同的微步数  
//   // 你可以根据需求设置MS引脚为高、低或PWM来控制微步数  
//   // 这里只是一个示例，具体实现取决于你的需求和A4988的配置  
// }